# -*- coding: utf-8 -*-
"""
    Project name：code_potentialflow
# -------------------------------
    File name：grid_plotter.py
    Created on：2025/6/7 15:16
    Author：(input)
    Description:
"""
import matplotlib.pyplot as plt
import numpy as np

class GridPlotter:
    @staticmethod
    def plot_grid(grid, title="Grid Visualization", show_points=False, figsize=(6, 5), color='gray'):
        """
        可视化任意网格对象（需包含 X, Y）

        Parameters:
        ------------
        grid : BaseGrid or its subclass
            必须具有 X, Y 属性的网格对象
        title : str
            图标题
        show_points : bool
            是否显示网格点坐标位置（散点）
        figsize : tuple
            图像大小
        color : str
            网格线颜色
        """
        X, Y = grid.X, grid.Y
        plt.figure(figsize=figsize)

        # 网格线
        for i in range(X.shape[0]):
            plt.plot(X[i, :], Y[i, :], color=color, linewidth=0.6)
        for j in range(X.shape[1]):
            plt.plot(X[:, j], Y[:, j], color=color, linewidth=0.6)

        # 可选：绘制散点位置
        if show_points:
            plt.scatter(X, Y, s=4, color='red', alpha=0.7)

        plt.gca().set_aspect('equal')
        plt.title(title)
        plt.xlabel('x')
        plt.ylabel('y')
        plt.grid(True, linestyle='--', alpha=0.4)
        plt.tight_layout()
        plt.show()


